//#include <iostream>
//using namespace std;
//int n = 0;
//int st[10] = { 0 };
//int p[10] = { 0 };
//void dfs(int d)
//{
//	if (d > n)
//	{
//		for (int i = 1; i <= n; i++)
//		{
//			printf("    %d", p[i]);
//		}
//		printf("\n");
//		return;
//	}
//	for (int i = 1; i <= n; i++)
//	{
//		if (!st[i])
//		{
//			st[i] = 1;
//			p[d] = i;
//			dfs(d + 1);
//			st[i] = 0;
//		}
//	}
//	return;
//}
//int main()
//{
//	cin >> n;
//	dfs(1);
//	return 0;
//}

//#include <iostream>
//using namespace std;
//int lowbit(int n)
//{
//	return n & (-n);
//}
//int main()
//{
//	int t = 0;
//	int n = 0;
//	int a = 0;
//	int b = 0;
//	cin >> n;
//	for (int i = 1; i <= n; i++)
//	{
//		t = i;
//		int c1 = 0;
//		int cs = 0;
//		while (t > 0)
//		{
//			t /= 2;
//			cs++;
//		}
//		t = i;
//		while (t> 0)
//		{
//			t -= lowbit(t);
//			c1++;
//		}
//		if (c1 > cs-c1) a++;
//		else b++;
//
//	}
//	cout << a << ' ' << b;
//	return 0;
//}
//
//#include <iostream>
//using namespace std;
//int main()
//{
//
//	return 0;
//}


//#include <iostream>
//using namespace std;
//int book[20][20] = { 0 };
//int c[20] = { 0 };
//int skill[20] = { 0 };
//int mint = -1;
//int n, m, x;
//int sum = 0;
//int e = 0;
//void dfs(int d)
//{
//	if (d == n)
//	{
//		int flag = 1;
//		for (int i = 0; i < m; i++)
//		{
//			if (skill[i] < x)
//			{
//				flag = 0;
//				break;
//			}
//		}
//		if ((mint > sum || mint==-1) && flag)
//		{
//			mint = sum;
//			e = 1;
//		}
//		return;
//	}
//
//		sum += c[d];
//		for (int i = 0; i < m; i++)
//		{
//			skill[i] += book[d][i];
//		}
//		dfs(d + 1);
//		for (int i = 0; i < m; i++)
//		{
//			skill[i] -= book[d][i];
//		}
//		sum -= c[d];
//		dfs(d + 1);
//	return;
//}
//int main()
//{
//	cin >> n >> m >> x;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> c[i];
//		for (int j = 0; j < m; j++)
//		{
//			cin >> book[i][j];
//		}
//	}
//	dfs(0);
//	if (e) cout << mint;
//	else cout << -1;
//	return 0;
//}

//#include <iostream>
//using namespace std;
//int c[20] = { 0 };
//int book[20][20] = { 0 };
//int skill[20] = { 0 };
//int main()
//{
//	int e = 0;
//	int sum = 0;
//	int min = -1;
//	int n, m, x;
//	cin >> n >> m >> x;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> c[i];
//		for (int j = 0; j < m; j++)
//		{
//			cin >> book[i][j];
//		}
//	}
//	for (int i = 0; i < (1 << n); i++)
//	{
//		for (int j = 0; j < n; j++)
//		{
//			if ((i >> j)&1)
//			{
//				sum += c[j];
//				for (int t = 0; t < m; t++)
//				{
//					skill[t] += book[j][t];
//				}
//			}
//		}
//		int flag = 0;
//
//		for (int t = 0; t < m; t++)
//		{
//			if (skill[t] < x)
//			{
//				flag = 1; break;
//			}
//		}
//
//		if (flag == 0)
//		{
//			e = 1;
//			if (sum < min || min == -1)
//			{
//				min = sum;
//			}
//		}
//		sum = 0;
//		for (int i = 0; i < m; i++)
//		{
//			skill[i] = 0;
//		}
//	}
//	if (e) cout << min;
//	else cout << -1;
//	return 0;
//}

#include <iostream>
using namespace std;
int l[10] = { 0 };
char c[10][10];
int n = 0;
int k = 0;
int num = 0;
void dfs(int d,int cnt)
{
	if (cnt >= k)
	{
		num++;
		return;
	}
	if (d > n)
	{
		return;
	}
	for (int i = 0; i < n; i++)
	{
		if (c[d][i] == '#' && l[i] == 0)
		{
			l[i] = 1;
			dfs(d + 1, cnt + 1);
			l[i] = 0;
		}
	}
	dfs(d + 1, cnt);
}
int main()
{
	cin >> n >> k;
	while (n != -1 && k != -1)
	{

		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
			{
				cin >> c[i][j];
			}
		}
		dfs(0,0);
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
			{
				c[i][j] = 0;
			}
		}
		cout << num << endl;
		num = 0;
		cin >> n >> k;
	}
	return 0;
}